package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.INewsTypeDAO;
import org.jsola.hr.dto.NewsInfoUpdateDTO;
import org.jsola.hr.dto.NewsTypeAddDTO;
import org.jsola.hr.dto.NewsTypeUpdateDTO;
import org.jsola.hr.entity.NewsTypeDO;
import org.jsola.hr.query.NewsTypeQuery;
import org.jsola.hr.vo.NewsTypeListVO;
import org.jsola.hr.vo.NewsTypeVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 官网信息的类型
 *
 * @author zhr
 */
public interface INewsTypeService extends IService<INewsTypeDAO, NewsTypeDO> {

    /**
     * 新增官网信息的类型
     * @param newsTypeAddDTO 新增官网信息的类型DTO
     * @param tokenUser 当前用户
     * @return 官网信息的类型详情信息
     */
    NewsTypeVO save(NewsTypeAddDTO newsTypeAddDTO, TokenUser tokenUser);

    /**
     * 修改官网信息的类型
     * @param newsTypeUpdateDTO 修改官网信息的类型DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(NewsTypeUpdateDTO newsTypeUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除官网信息的类型，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param newsTypeIds 官网信息的类型id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...newsTypeIds);

    /**
     * 根据官网信息的类型id查找
     * @param newsTypeId 官网信息的类型id
     * @param siteId 所属站点id
     * @return 官网信息的类型详情信息
     */
    NewsTypeVO selectById(String newsTypeId, String siteId);

    /**
     * 查询官网信息的类型
     * @param newsTypeQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表信息
     */
    List<NewsTypeListVO> select(NewsTypeQuery newsTypeQuery, String siteId);

    /**
    * 查询官网信息的类型记录数
    * @param newsTypeQuery 查询条件
    * @param siteId 所属站点id
    * @return 官网信息的类型记录数
    */
    int selectCount(NewsTypeQuery newsTypeQuery, String siteId);

    /**
     * 分页查询官网信息的类型
     * @param newsTypeQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表信息
     */
    Page<NewsTypeListVO> selectPage(NewsTypeQuery newsTypeQuery, String siteId);


    /**
     * 根据官网信息的类型id查找
     * @param newsTypeId 官网信息的类型id
     * @param siteId 所属站点id
     * @return 官网信息的类型
     */
    NewsTypeDO selectDOById(String newsTypeId, String siteId);

    /**
     * 查询官网信息的类型
     * @param newsTypeQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表
     */
    List<NewsTypeDO> selectDO(NewsTypeQuery newsTypeQuery, String siteId);

    /**
     * 分页查询官网信息
     * @param newsTypeQuery 查询条件
     * @return 官网信息列表
     */
    Page<NewsTypeListVO> selectPageNewsType(NewsTypeQuery newsTypeQuery);

    /**
     * 新增官网信息的内容
     * @param newsTypeAddDTO 新增官网信息的类型DTO
     * @param tokenUser 当前用户信息
     * @return 官网信息的类型详情信息
     */
    NewsTypeVO insertNewsTypeAndInfo(NewsTypeAddDTO newsTypeAddDTO, TokenUser tokenUser);

    /**
     * 根据id批量删除type和info表数据
     * @param id info表id
     * @return 修改个数
     */
    Integer deleteTypeAndInfoById(String[] id);

    /**
     * 更新新闻
     * @param newsInfoUpdateDTO 更新新闻内容
     * @param tokenUser 当前登陆用户
     * @return 更新结果
     */
    Integer updateNewsTypeAndInfo(NewsInfoUpdateDTO newsInfoUpdateDTO, TokenUser tokenUser);
}


